<!DOCTYPE html>
<html lang='en'>

<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <title>Document</title>
    <script src='../vue.js'></script>
</head>

<body>
    <div id='app'>
        <!-- 父组件 -->
        <h1>{{count}}</h1>
        <button @click="count++">{{count}}</button>
        <hr>
        <com :count="count"></com>
    </div>
</body>

<template id="com">
    <!-- 子组件 -->
    <div>
        <h1>{{num}}</h1>
        <button @click="num++">{{num}}</button>
        <button @click="countClick">{{count}}</button>
    </div>
</template>
<script>

    /*
        单向数据流：
            父组件给子组件传递数据，子组件只能使用不能修改，数据是单向流入的

        子组件非要改：
            1. 将父组件传递的数据复制一份，修改自己组件中的内容(后期不会同步)
            2. 子组件可以告诉父组件，让父组件自己去改(子传父)
            3. 找到父组件，然后用父组件去改
    */
    const com = {
        template: '#com',
        props: ['count'],
        data() {
            return {
                // 将父组件传递的数据复制一份给 num 我们使用 num 即可
                // 但是会导致后期父组件变化不会同步到子组件
                num: this.count || 0
            }
        },
        methods: {
            countClick() {
                // console.log(this);
                // 找到父组件然后修改
                this.$parent.count++
            }

        }
    }

    const app = {
        data() {
            return {
                count: 100
            }
        },
        components: {
            com
        },
        methods: {},
    }
    const vm = Vue.createApp(app).mount('#app')
</script>

</html>